package common.model.Entity.courseEntity;

import common.model.Entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * 表示一门课程的实体类。
 * <p>
 * 包含课程基本信息、授课教师、学分、容量、学期、课程状态以及课程安排等信息。
 * 每门课程可能对应多个上课安排（CourseSchedule）。
 * </p>
 */
@Setter
@Getter
public class Course extends BaseEntity {
    /** 课程代码 */
    private String courseCode;

    /** 课程名称 */
    private String courseName;

    /** 任课教师ID */
    private Long teacherId;

    /** 学分 */
    private Integer credit;

    /** 最大容量 */
    private Integer maxCapacity;

    /** 起始周 */
    private Integer weekStart;

    /** 结束周 */
    private Integer weekEnd;

    /** 总课时数 */
    private Integer classPeriod;

    /** 当前已选人数（可选，用于避免与数据库不一致） */
    private Integer currentEnrollment;

    /** 学期（如 2023-FALL） */
    private String semester;

    /** 课程描述 */
    private String description;

    /** 状态 (0:关闭, 1:开放) */
    private Integer status;

    /** 逻辑删除标记 */
    private Integer isDeleted;

    /** 课程的上课安排列表 */
    private List<CourseSchedule> schedules;
}

